<?php

namespace Rebecca\RebeccaBundle\Component;

use Rebecca\RebeccaBundle\Entity\DocumentosEmpleado;

require_once "ComponentBase.php";

/**
 * Description of TestComponent
 *
 * @author JeyDotC
 */
class TrabajadoresComponent extends ComponentBase {

    /**
     *
     * @param string $cedula
     * @return \Rebecca\RebeccaBundle\Entity\Trabajadores 
     */
    public function findByCedula($cedula) {
        return $this->em->getRepository($this->entityName)->findOneBy(array(
                    "numeroIdentidad" => $cedula,
                ));
    }

    public function getContratos($idTrabajador) {
        return $this->em->getRepository("RebeccaBundle:Contratos")->findBy(
                        array(
                            'idTrabajador' => $idTrabajador
                ));
    }

    function getFull($id) {
        /* @var $trabajador \Rebecca\RebeccaBundle\Entity\Trabajadores */
        $trabajador = $this->get($id);

        $laborales = $this->em->getRepository("RebeccaBundle:Laborales")->findBy(
                array(
                    'idTrabajador' => $id
                ));

        $academicos = $this->em->getRepository("RebeccaBundle:Academicos")->findBy(
                array(
                    'idTrabajador' => $id
                ));

        $familiares = $this->em->getRepository("RebeccaBundle:Familiares")->findBy(
                array(
                    'idTrabajador' => $id
                ));

        $contratos = $this->getContratos($id);

        $cuentasBancarias = $this->em->getRepository("RebeccaBundle:CuentasBancarias")->findBy(
                array(
                    'idTrabajador' => $id
                ));

        $cargos = $this->em->getRepository("RebeccaBundle:TrabajadoresEnVacante")->findBy(
                array(
                    'idTrabajador' => $id
                ));

        $trabajador->setLaborales($laborales);
        $trabajador->setAcademicos($academicos);
        $trabajador->setFamiliares($familiares);
        $trabajador->setContratos($contratos);
        $trabajador->setCuentasBancarias($cuentasBancarias);
        $trabajador->setTrabajadoresEnVacante($cargos);

        return $trabajador;
    }

    function getContrato($id) {
        /* @var $contrato Rebecca\RebeccaBundle\Entity\Contratos */
        $contrato = $this->em->find("RebeccaBundle:Contratos", $id);

        $memorandos = $this->em->getRepository("RebeccaBundle:Memorandos")->findBy(
                array(
                    'idContrato' => $id
                ));

        $ausentismos = $this->em->getRepository("RebeccaBundle:Ausentismos")->findBy(
                array(
                    'idContrato' => $id
                ));

        $permisos = $this->em->getRepository("RebeccaBundle:Permisos")->findBy(
                array(
                    'idContrato' => $id
                ));

        $contrato->setMemorandos($memorandos);
        $contrato->setAusentismos($ausentismos);
        $contrato->setPermisos($permisos);

        return $contrato;
    }

    /**
     *
     * @param int $idContrato
     * @return array<DocumentosEmpleado>
     */
    public function getDocumentos($idContrato) {
        return $this->em->getRepository("RebeccaBundle:DocumentosEmpleado")->findBy(array(
                    "idContrato" => $idContrato
                ));
    }

    /**
     *
     * @param int $id
     * @return DocumentosEmpleado
     */
    public function getDocumento($id) {
        return $this->em->getRepository("RebeccaBundle:DocumentosEmpleado")->find($id);
    }

    public function eliminarDocumento($id) {
        $documento = $this->getDocumento($id);
        $this->delete($documento);
    }

    /**
     *
     * @param DocumentosEmpleado $documento 
     */
    function agregarDocumento(DocumentosEmpleado $documento) {
        $this->save($documento);
    }

}

?>